package util

import "regexp"

//判断是否是合法的密码，为空、长度不足、符号单一等均不允许.
//条件：6位以上，含大/小字母、数字，中任意2中组合。
//输入密码明文
func IsStrongPassword(pwd string) bool {
	if len(pwd) < 6 {
		return false
	}
	hasNum := false
	hasUpper := false
	hasLower := false
	for i := 0; i < len(pwd); i++ {
		if pwd[i] >= '0' && pwd[i] <= '9' {
			hasNum = true
		} else if pwd[i] >= 'a' && pwd[i] <= 'z' {
			hasLower = true
		} else if pwd[i] >= 'A' && pwd[i] <= 'Z' {
			hasUpper = true
		}
	}
	cnt := 0
	if hasNum {
		cnt++
	}
	if hasUpper {
		cnt++
	}
	if hasLower {
		cnt++
	}
	if cnt >= 2 {
		return true
	}
	return false
}

func IsValidPwd(pwd string) (int, string) {
	m1, _ := regexp.MatchString(`[\.\,\_\~\!\@\#\$\%\^\&\*\?]+`, pwd) //特殊符号
	m2, _ := regexp.MatchString(`[a-zA-Z]+`, pwd)                     //字母
	m3, _ := regexp.MatchString(`[0-9]+`, pwd)                        //数字
	strong := -1
	if len(pwd) > 16 || len(pwd) < 8 {
		return strong, "密码长度8-16位字符，请留意"
	}
	if m1 {
		strong += 1
	}
	if m2 {
		strong += 1
	}
	if m3 {
		strong += 1
	}
	if strong < 1 {
		return strong, "请使用字母、数字、特殊符号中的两种及以上组合作为密码"
	} else {
		return strong, ""
	}
}

//支持号段 13x、15x、17x、18x
//支持166 199系列号段 20191230
func IsValidMobile(mobile string) bool {
	if m, _ := regexp.MatchString(`^1[0-9][0-9]\d{8}$`, mobile); m {
		return true
	}
	return false
}
